Siamese Network

  1. Siamese 网络采用两个不同的输入,通过两个具有相同架构、参数和权重的相似子网络。
  2. 这两个子网互为镜像,就像连体双胞胎一样。 因此,对任何子网架构、参数或权重的任何更改也适用于其他子网。
  3. 两个子网络输出一个编码来计算两个输入之间的差异。
  4. Siamese 网络的目标是使用相似度分数对两个输入是相同还是不同进行分类。可以使用二元交叉熵、对比函数或三元组损失来计算相似度分数,这些都是用于一般距离度量学习方法的技术。
  5. Siamese 网络是一种one-shot分类器,它使用判别特征从未知分布中概括不熟悉的类别

Siamese Network.webp

train

  1. 加载包含不同类的数据集
  2. 创建正负数据对。 当两个输入相同时为正数据对,当两个输入不同时为负数据对。
  3. 构建卷积神经网络,它使用全连接层输出特征编码。我们将通过姊妹 CNN传递两个输入。姐妹 CNN 应该具有相同的架构、超参数和权重。
  4. 构建差分层以计算两个姐妹 CNN 网络编码输出之间的欧几里得距离。
  5. 最后一层是具有单个节点的全连接层,使用 sigmoid 激活函数输出相似度分数。
  6. 使用二元交叉熵作为损失函数。

eval

  1. 向训练模型发送两个输入以输出相似度分数。
  2. 由于最后一层使用 sigmoid 激活函数,它输出一个范围在 0 到 1 之间的值。接近 1 的相似度得分意味着两个输入是相似的。接近 0 的相似度得分意味着两个输入不相似。一个好的经验法则是使用 0.5 的相似性截止阈值。

应用

  1. 签名验证
  2. 面部识别
  3. 比较指纹
  4. 根据临床分级评估疾病严重程度
  5. 工作资料的文本相似度以恢复匹配
  6. 用于配对相似问题的文本相似度

优缺点

  1. Siamese 网络是一种one-shot分类模型,只需一个训练样本即可进行预测。
  2. 对类别不平衡更鲁棒,因为它需要很少的信息。 它可以用于某些类的样本很少的数据集。
  3. Siamese 网络的one-shot学习特性不依赖于特定领域的知识,而是利用了深度学习技术。
  4. 仅输出相似性分数而不输出概率。互斥事件的概率总和为 1。而距离不限于小于或等于 1。

loss

在 Triplet loss 中,anchor和正样本编码之间的距离被最小化,而anchor和负样本编码之间的距离被最大化。
Siamese Network-1.webp